package controlador;

import java.util.Date;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

import view.TraficoTortaVO;
import vo.TraficoCampaniaFechaVO;

import excepciones.Excepciones;
import fachade.PrincipalFachade;

import negocio.TraficoCampaniaFecha;
import negocio.TraficoNumCorto;

public class ControladorTraficoNumCorto {
	
	private static List<TraficoNumCorto> traficos;
	
	private static ControladorTraficoNumCorto instance = null;

	public static ControladorTraficoNumCorto getInstance() {
	if (instance == null) {
	instance = new ControladorTraficoNumCorto();
	traficos = new LinkedList<TraficoNumCorto>();
	}
	return instance;
	}

	public List<TraficoNumCorto> getTraficos() {
		return traficos;
	}

	public void setTraficos(List<TraficoNumCorto> traficos) {
		this.traficos = traficos;
	}
	
	
	public List<TraficoNumCorto> getTraficoByCampania( int codCampania ) {
		List<TraficoNumCorto> trafCamp=null;
		for(TraficoNumCorto t: traficos){
			if(t.getCampania().getCodCampania()==codCampania)
				trafCamp.add(t);
		}
		return trafCamp;
	}

	public List<TraficoCampaniaFecha> getTraficoCampaniaFecha(int codCampania, Date fechaDesde, Date fechaHasta) throws Exception{
		return PrincipalFachade.getInstance().getITraficoFachade().getTraficoCampaniaFecha(codCampania, fechaDesde, fechaHasta);
		
	}
	
	public List<TraficoCampaniaFechaVO> getTraficoCampaniaFechaVO(int codCampania, Date fechaDesde, Date fechaHasta) throws Exception{
		
		List<TraficoCampaniaFecha> ltraficoNegocio = null;
		List<TraficoCampaniaFechaVO> ltraficoVO = null;
		try {
			ltraficoNegocio = getTraficoCampaniaFecha(codCampania, fechaDesde, fechaHasta);
			
			Excepciones.obtenerInstancia().checkListEmpty(ltraficoNegocio, "No hubo trafico para ese periodo");
			ltraficoVO = new LinkedList<TraficoCampaniaFechaVO>();
			
			for (Iterator iterator = ltraficoNegocio.iterator(); iterator.hasNext();) {
				TraficoCampaniaFecha traficoCampaniaFecha = (TraficoCampaniaFecha) iterator
						.next();
				TraficoCampaniaFechaVO t = new TraficoCampaniaFechaVO(traficoCampaniaFecha);
				ltraficoVO.add(t);
				
			}	
		} catch (Exception e) {
			// TODO: handle exception
			e.getMessage();
		}
		return ltraficoVO;
	}

	public List<TraficoTortaVO> getTraficoTortaByTipo(String tipo,
			Date fechaDesde, Date fechaHasta) throws Exception{
		// TODO Auto-generated method stub
		return PrincipalFachade.getInstance().getITraficoFachade().getTraficoTortaByTipo(tipo, fechaDesde,fechaHasta);
	}
}
